\section{內建函式}

OpenCL C 編程語言提供了一套豐富的內建函式用於標量和矢量運算。
這些函式中有很多跟通用 C 庫中提供的函式名字類似，
不同的是他們所支持的參數型別即可是標量，也可是矢量。
\cnglo{app}應儘可能使用這些內建函式，而不是去實現自己的版本。

用戶自定義的 OpenCL C 函式，按照函式的 C 標準規則運行（C99-TC2-{\ftRef{節 6.9.1}}）。
在函式入口處，對於所有會動態變化的參數（variably modified parameter），都會求出其大小，
並且按照\refsec{usualArithConv}中描述的常見算術轉換規則
將所有引數算式的值都轉換成對應參數的型別。
本節所描述的內建函式行為類似，
不過由於同一個內建函式可能有多種形式，為避免歧義，不會有隱式的標量拓寬。
然而需要注意的是，可能某些內建函式的某些形式是針對標量以及矢量型別的混合運算。

\input{chapter_lgg/sec_builtinfunc/workitemfunc.tex}
\input{chapter_lgg/sec_builtinfunc/mathfunc.tex}
\input{chapter_lgg/sec_builtinfunc/integerfunc.tex}
\input{chapter_lgg/sec_builtinfunc/commonfunc.tex}
\input{chapter_lgg/sec_builtinfunc/geometricfunc.tex}
\input{chapter_lgg/sec_builtinfunc/relationfunc.tex}
\input{chapter_lgg/sec_builtinfunc/vectorlsfunc.tex}
\input{chapter_lgg/sec_builtinfunc/syncfunc.tex}
\input{chapter_lgg/sec_builtinfunc/memfencefunc.tex}
\input{chapter_lgg/sec_builtinfunc/asynccopyprefetch.tex}
\input{chapter_lgg/sec_builtinfunc/atomicfunc.tex}
\input{chapter_lgg/sec_builtinfunc/miscvectorfunc.tex}
\input{chapter_lgg/sec_builtinfunc/printf.tex}
\input{chapter_lgg/sec_builtinfunc/imgrwfunc.tex}

